import type { Component } from "vue"

export type Any = string | string[] | number | number[] | object | object[]

export interface KeysProps {
    [key: string]: string | string[] | number | number[] | object | object[] | Component
}

export interface ComponentsProps {
    prop?: string
    is?: string | Component
    display?: boolean | ((value: Record<string, unknown>) => boolean)
    children?: boolean
    isEncrypt?: boolean
    isDecrypt?: boolean
    bind?: object
    on?: object
}

export interface ItemsProps extends ComponentsProps {
    span?: number
    label?: string
    labelPosition?: string
    queryValue?: string[]
    joinValue?: string[]
    list?: ComponentsProps[]
}

export interface BtnsProps {
    is: string | Component
    display?: boolean | ((value: Record<string, unknown>) => boolean)
    bind?: object
    on?: object
}

export interface ColumnsProps extends ComponentsProps {
    type?: string
    label: string
    width?: string | number
    fixed?: string | boolean
    align?: string
    showOverflowTooltip?: boolean
    list?: ComponentsProps[]
}

export interface OptionsProps {
    value: string | number
    label: string
}